package com.itheima.api;

import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.itheima.mapper.SmsCouponMapper;
import com.itheima.pojo.SmsCoupon;
import com.itheima.vo.PageResult;
import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.beans.factory.annotation.Autowired;

/**
 * @author lenovo
 * @description 针对表【sms_coupon(优惠券表)】的数据库操作Service实现
 * @createDate 2022-10-11 14:26:50
 */
@DubboService
public class SmsCouponApiImpl implements SmsCouponApi {

    @Autowired
    private SmsCouponMapper couponMapper;

    //保存优惠券
    @Override
    public Long saveCoupon(SmsCoupon smsCoupon) {
        couponMapper.insert(smsCoupon);
        //返回该coupon的id
        return smsCoupon.getId();
    }

    //删除coupon
    @Override
    public void deleteById(Integer id) {
        couponMapper.deleteById(id);
    }

    /**
     * 根据优惠券名称和类型分页获取优惠券列表
     */
    @Override
    public PageResult getCouponListByCouponNameAndByPage(String name, Integer pageNum, Integer pageSize, Integer type) {
        LambdaQueryWrapper<SmsCoupon> lqw = new LambdaQueryWrapper<>();
        //name可能为空
        //type可能为空
        lqw.eq(StrUtil.isNotBlank(name), SmsCoupon::getName, name)
                .eq(ObjectUtil.isNotNull(type), SmsCoupon::getType, type);
        //分页
        //分页构造函数
        //Params:
        //pageNum – 当前页
        //pageSize – 每页显示条数
        IPage<SmsCoupon> iPage = new Page<>(pageNum, pageSize);
        //根据 entity 条件，查询全部记录（并翻页）
        //Params:
        //page – 分页查询条件（可以为 RowBounds.DEFAULT）
        //queryWrapper – 实体对象封装操作类（可以为 null）
        couponMapper.selectPage(iPage, lqw);
        Integer total = Convert.toInt(iPage.getTotal());//总条数
        Integer totalPage = Convert.toInt(iPage.getPages());//当前分页总页数
        long size = iPage.getSize();//每页显示条数
        return new PageResult(pageNum, pageSize, total, totalPage, iPage.getRecords());
    }

    //找到coupon
    @Override
    public SmsCoupon findCouponById(Integer id) {
        return couponMapper.selectById(id);
    }

    //更新coupon
    @Override
    public void updateCoupon(SmsCoupon coupon) {
        couponMapper.updateById(coupon);
    }
}




